perm filename GREEKU.TMP[CM,DEK] blob sn#788859 filedate 1985-04-02 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00013 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002	% Computer Modern Greek caps, analogous to the uppercase Roman letters.
C00004 00003	cmchar "Uppercase Greek Gamma"
C00006 00004	cmchar "Uppercase Greek Delta"
C00008 00005	cmchar "Uppercase Greek Theta"
C00010 00006	cmchar "Uppercase Greek Lambda"
C00013 00007	cmchar "Uppercase Greek Xi"
C00016 00008	cmchar "Uppercase Greek Pi"
C00018 00009	cmchar "Uppercase Greek Sigma"
C00020 00010	cmchar "Uppercase Greek Upsilon"
C00022 00011	cmchar "Uppercase Greek Phi"
C00024 00012	cmchar "Uppercase Greek Psi"
C00026 00013	cmchar "Uppercase Greek Omega"
C00028 ENDMK
C⊗;
% Computer Modern Greek caps, analogous to the uppercase Roman letters.

% Character codes \0000 through \0012 are generated,
% using plain \TeX's standard text font layout conventions.
cmchar "Uppercase Greek Gamma";
beginchar(oct"000",11u#-width_adj#,cap_height#,0);
italcorr cap_height#*slant-beak_jut#-.5u#;
adjust_fit(cap_serif_fit#,0);
h:=round(h-stem_corr);
penpos1(cap_stem-tiny,0); penpos2(cap_stem-tiny,0);
pickup tiny_pen; top y1=h; bot y2=0;
lft x1l=lft x2l=round max(2u,3u-.5cap_stem);
filldraw stroke z1e--z2e; % stem
pickup crisp_pen; penpos3(slab-crisp,90); penpos4(hair-crisp,0);
top y3r=h; x3=x1; rt x4r=round(w-u); y4=good.y(y3l-beak);
arm.e(3,4,beak_darkness,beak_jut);	% arm and beak
if serifs: cup_serif(1,2,a,b,1/3,cap_jut,1/3,.5cap_jut);	% upper serif
 cup_serif(2,1,c,d,1/3,cap_jut,1/3,1.25cap_jut); fi	% lower serif
math_fit(0,ic#-2.5u#); penlabels(1,2,3,4); endchar;
cmchar "Uppercase Greek Delta";
beginchar(oct"001",15u#,cap_height#,0);
adjust_fit(0,0);
numeric left_stem,notch_height,alpha;
left_stem=cap_hair if notched: -3stem_corr fi;
x1l=w-x4r=.75u; y1=y4=0;
x2-x1=x4-x3; x3r=x2r+apex_corr; y2=y3=h+apex_o;
alpha=diag_ratio(2,left_stem,y2-y1,x4r-x1l-apex_corr);
penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0);
penpos3(alpha*cap_stem,0); penpos4(alpha*cap_stem,0);
fill diag_end(2l,1l,4r,3r)--diag_end(4r,3r,2l,1l)--cycle;	% triangle
z0=whatever[z1r,z2r]=whatever[z3l,z4l]; notch_height=h-cap_hair;
y5=y6=.85cap_stem; z5=whatever[z1r,z2r]; z6=whatever[z3l,z4l];
if notched and (y0<notch_height): y0:=notch_height;
  unfill z0+.5right{down}...{z4-z3}z6--z5{z2-z1}
    ...{up}z0+.5left--cycle; % counter
else: unfill z0--z5--z6--cycle; fi	% counter
penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Uppercase Greek Theta";
beginchar(oct"002",14u#,cap_height#,0);
italcorr .7cap_height#*slant-.5u#;
adjust_fit(0,0);
numeric reduced_curve; reduced_curve=round(cap_curve-2stem_corr);
penpos1(vair,90); penpos3(round(vair+.5hair_corr),-90);
penpos2(reduced_curve,180); penpos4(reduced_curve,0);
if monospace: x2r=round 1.5u;
 interim superness:=sqrt superness;	% make |"O"|, not |"0"|
else: x2r=round u; fi
x4r=w-x2r; x1=x3=.5w; y1r=h+o; y2=y4=.5h-hair_corr; y3r=-o;
penstroke pulled_super_arc.e(1,2)(.5superpull)
 & pulled_super_arc.e(2,3)(.5superpull)
 & pulled_super_arc.e(3,4)(.5superpull)
 & pulled_super_arc.e(4,1)(.5superpull) & cycle;	% bowl
pickup crisp_pen; penpos5(.85cap_stem-crisp,90); penpos6(.85cap_stem-crisp,90);
lft x5=w-rt x6=round(x2l+u)+1; y5=y6=.5[y1l,y3l];
filldraw stroke z5e..z6e;	% bar
if serifs: penpos7(hair-crisp,0); penpos8(hair-crisp,0);
 penpos9(hair-crisp,0); penpos10(hair-crisp,0);
 x7l=x8l=x5; x9r=x10r=x6; y7-y5r=y9-y6r=y5l-y8=y6l-y10=round .05h;
 filldraw stroke z7e..z8e;	% left serif
 filldraw stroke z9e..z10e; fi	% right serif
math_fit(-.3cap_height#*slant-.5u#,ic#-.5u#);
penlabels(1,2,3,4,5,6,7,8,9,10); endchar;
cmchar "Uppercase Greek Lambda";
beginchar(oct"003",11u#,cap_height#,0);
adjust_fit(cap_serif_fit#,cap_serif_fit#);
numeric left_stem,outer_jut,notch_height,alpha;
left_stem=cap_hair if notched: -3stem_corr fi;
outer_jut=.7cap_jut; x1l=w-x4r=l+letter_fit+outer_jut+.5u; y1=y4=0;
x2-x1=x4-x3; x3r=x2r+apex_corr; y2=y3=h+apex_o;
alpha=diag_ratio(2,left_stem,y2-y1,x4r-x1l-apex_corr);
penpos1(alpha*left_stem,0); penpos2(alpha*left_stem,0);
penpos3(alpha*cap_stem,0); penpos4(alpha*cap_stem,0);
z0=whatever[z1r,z2r]=whatever[z3l,z4l]; notch_height=h-cap_hair;
if notched and (y0<notch_height): y0:=notch_height;
  fill z0+.5right{down}...{z4-z3}diag_end(3l,4l,4r,3r)
    --diag_end(4r,3r,2l,1l)--diag_end(2l,1l,1r,2r){z2-z1}
    ...{up}z0+.5left--cycle; % left and right diagonals
else: fill z0--diag_end(0,4l,4r,3r)--diag_end(4r,3r,2l,1l)
    --diag_end(2l,1l,1r,0)--cycle; fi % left and right diagonals
if serifs: numeric inner_jut; pickup tiny_pen;
 diag_inside(1,2); diag_inside(4,3);
 if rt x1'r+cap_jut+1.5u+2≤lft x4'l-cap_jut: inner_jut=cap_jut;
 else: rt x1'r+inner_jut+1.5u+2=lft x4'l-inner_jut; fi
 cup_serif(1',2,a,b,1/2,outer_jut,.6,inner_jut)(dark);	% left serif
 cup_serif(4',3,c,d,1/2,inner_jut,1/3,outer_jut); fi	% right serif
penlabels(0,1,2,3,4,5,6); endchar;
cmchar "Uppercase Greek Xi";
beginchar(oct"004",11u#,cap_height#,0);
italcorr cap_height#*slant-.5u#;
adjust_fit(0,0);
h:=round(h-2stem_corr);
numeric shaved_stem; pickup tiny_pen;
shaved_stem= if serifs: round(.9[vair,.85cap_stem]) else: cap_stem fi;
penpos1(shaved_stem-tiny,90); penpos2(shaved_stem-tiny,90);
penpos3(shaved_stem-tiny,90); penpos4(shaved_stem-tiny,90);
penpos5(shaved_stem-tiny,90); penpos6(shaved_stem-tiny,90);
lft x1=lft x3=w-rt x2=w-rt x4=round u; lft x5=w-rt x6=round 2u;
top y1r=top y2r=h; bot y3l=bot y4l=0; top y5r=top y6r=round(.5h+.5shaved_stem);
filldraw stroke z1e..z2e;	% upper bar
filldraw stroke z3e..z4e;	% lower bar
filldraw stroke z5e..z6e;	% middle bar
if serifs: numeric xjut;
 if bot y1l-.85cap_jut>top y5r+.85cap_jut: xjut=.85cap_jut;
 else: bot y1l-xjut=top y5r+xjut+2epsilon; fi
 pickup crisp_pen;
 penpos1'(hair-crisp,0); penpos2'(hair-crisp,0); y1'=y2'=y1;
 penpos7(hair-crisp,0); penpos8(hair-crisp,0); x7=x1'=w-x8=w-x2'; y7=y8;
 lft x7l=round u; bot y7=h-shaved_stem-xjut;
 filldraw stroke z1'e..z7e; filldraw stroke z2'e..z8e;	% upper serifs
 penpos3'(hair-crisp,0); penpos4'(hair-crisp,0); y3'=y4'=y3;
 penpos9(hair-crisp,0); penpos10(hair-crisp,0); x9=x3'=w-x10=w-x4'; y9=y10;
 lft x9l=round u; top y9=shaved_stem+xjut;
 filldraw stroke z3'e..z9e; filldraw stroke z4'e..z10e;	% lower serifs
 penpos11(hair-crisp,0); penpos12(hair-crisp,0); y11=y12;
 penpos13(hair-crisp,0); penpos14(hair-crisp,0); y13=y14;
 lft x11l=lft x13l=w-rt x12r=w-rt x14r=round 2u;
 top y11-bot y13=shaved_stem+1.8xjut; .5[y11,y13]=y5;
 filldraw stroke z11e..z13e; filldraw stroke z12e..z14e; fi	% middle serifs
math_fit(0,.5ic#); penlabels(1,2,3,4,5,6,7,8,9,10,11,12,13,14); endchar;
cmchar "Uppercase Greek Pi";
beginchar(oct"005",13u#+width_adj#,cap_height#,0);
italcorr cap_height#*slant-cap_serif_fit#+cap_jut#-2.5u#+min(.5cap_stem#,u#);
adjust_fit(cap_serif_fit#,cap_serif_fit#);
h:=round(h-stem_corr);
penpos1(cap_stem-tiny,0); penpos2(cap_stem-tiny,0);
penpos3(cap_stem-tiny,0); penpos4(cap_stem-tiny,0);
pickup tiny_pen; top y1=top y3=h; bot y2=bot y4=0;
lft x1l=lft x2l=round max(2u,3u-.5cap_stem); x3=x4=w-x1;
filldraw stroke z1e--z2e; % left stem
filldraw stroke z3e--z4e; % right stem
penpos5(cap_bar,90); penpos6(cap_bar,90);
x5=x1; x6=x3; y5r=y6r=h;
fill stroke z5e--z6e;	% bar
if serifs: numeric inner_jut;
 if rt x1r+cap_jut+2u+2≤lft x3l-cap_jut: inner_jut=cap_jut;
 else: rt x1r+inner_jut+2u+2=lft x3l-inner_jut; fi
 cup_serif(1,2,a,b,1/3,cap_jut,1/3,epsilon);	% upper left serif
 cup_serif(2,1,c,d,1/3,cap_jut,1/3,inner_jut); % lower left serif
 cup_serif(3,4,e,f,1/3,epsilon,1/3,cap_jut);	% upper left serif
 cup_serif(4,3,g,h,1/3,inner_jut,1/3,cap_jut); fi	% lower left serif
math_fit(0,.5ic#); penlabels(1,2,3,4,5,6); endchar;
cmchar "Uppercase Greek Sigma";
beginchar(oct"006",13u#,cap_height#,0);
italcorr cap_height#*slant-beak_jut#-.5u#;
adjust_fit(0,0);
numeric bot_arm_thickness;
bot_arm_thickness=round(.25[slab,.85cap_stem]);
pickup tiny_pen; lft x1l=round u; x1l=x2l=x4l;
top y1=h; bot y2=h-slab; bot y4=0; x3l-x1l=4/11(w-2u); y3=.5h;
numeric alpha[]; alpha1=((x3l-x1l)++(y2-y3))/(y2-y3);
penpos1(alpha1*(cap_stem-tiny),0); penpos2(alpha1*(cap_stem-tiny),0);
penpos3(alpha1*(cap_stem-tiny),0);
alpha2=diag_ratio(1,cap_hair-tiny,y3-y4,x3r-x4l);
penpos4(alpha2*(cap_hair-tiny),0);
z0=whatever[z2l,z3l]=z4l+whatever*(z3r-z4r);
filldraw z1l--z2l--z0--z4l--z4r--z3r--z2r--z1r--cycle;	% diagonals
pickup crisp_pen; penpos5(slab-crisp,90); penpos6(hair-crisp,0);
top y5r=h; x5=x1; rt x6r=round(w-u); y6=good.y(y5l-beak);
arm.a(5,6,beak_darkness,beak_jut);	% upper arm and beak
penpos7(bot_arm_thickness-crisp,-90); penpos8(hair-crisp,0);
bot y7r=0; z7l=whatever[z4,z3]; x7r:=x4; x8=x6; y8=good.y(y7l+beak);
arm.b(7,8,beak_darkness,beak_jut);	% lower arm and beak
math_fit(0,.5ic#); penlabels(0,1,2,3,4,5,6,7,8); endchar;
cmchar "Uppercase Greek Upsilon";
beginchar(oct"007",14u#,cap_height#,0);
italcorr .8cap_height#*slant-.5u#;
adjust_fit(0,0);
penpos1(cap_stem-tiny,0); penpos2(cap_stem-tiny,0);
pickup tiny_pen; y1=.5h; bot y2=0;
lft x1l=lft x2l=round(.5w-.5cap_stem);
filldraw stroke z1e--z2e; % stem
penpos3(.6cap_stem,0); penpos4(.75cap_curve,90); penpos5(cap_hair,180);
z3l=lft z1l; x5r=round u; y5=bot .8h; x4=.61803[x3l,x5l]; y4r=h+o;
penpos5'(cap_hair,180); x5'=x5; y5'=h;
fill z3r{up}...z4r{left}...{down}diag_end(5'r,5r,5l,5'l){up}
 ...{right}z4l...{down}z3l--cycle;	% left arc
penpos6(.6cap_stem,0); penpos7(.75cap_curve,-90); penpos8(cap_hair,-180);
z6r=rt z1r; x8=w-x5; y8=y5; x7=w-x4; y7=y4;
penpos8'(cap_hair,-180); x8'=x8; y8'=h;
fill z6r{up}...z7r{right}...{down}diag_end(8'r,8r,8l,8'l){up}
 ...{left}z7l...{down}z6l--cycle;	% right arc
if serifs: cup_serif(2,1,a,b,1/3,1.25cap_jut,1/3,1.25cap_jut); fi	% serif
math_fit(-.8cap_height#*slant-.5u#,ic#-2.5u#);
penlabels(1,2,3,4,5,6,7,8); endchar;
cmchar "Uppercase Greek Phi";
beginchar(oct"010",13u#,cap_height#,0);
italcorr .5cap_height#*slant-.5u#;
adjust_fit(0,0);
numeric shaved_stem,reduced_curve;
shaved_stem=cap_stem-round 2stem_corr;
reduced_curve=cap_curve-round stem_corr;
penpos1(shaved_stem-tiny,0); penpos2(shaved_stem-tiny,0);
pickup tiny_pen; top y1=h; bot y2=0;
lft x1l=lft x2l=round(.5w-.5cap_stem);
filldraw stroke z1e--z2e; % stem
penpos3(vair,90); penpos5(vair,-90);
penpos4(reduced_curve,180); penpos6(reduced_curve,0);
x4r=round u; x6r=w-x4r; x3=x5=.5w;
y3r=round(.8h+.5vair); y4=y6=.5[y3,y5]; y5r=round(.2h-.5vair);
penstroke pulled_super_arc.e(3,4)(.5superpull)
 & pulled_super_arc.e(4,5)(.5superpull)
 & pulled_super_arc.e(5,6)(.5superpull)
 & pulled_super_arc.e(6,3)(.5superpull) & cycle;	% bowl
if serifs: cup_serif(1,2,a,b,1/3,1.25cap_jut,1/3,1.25cap_jut);	% upper serif
 cup_serif(2,1,c,d,1/3,1.25cap_jut,1/3,1.25cap_jut); fi	% lower serif
math_fit(-.5cap_height#*slant-.5u#,ic#); penlabels(1,2,3,4,5,6); endchar;
cmchar "Uppercase Greek Psi";
beginchar(oct"011",14u#,cap_height#,0);
italcorr .8cap_height#*slant-.5u#;
adjust_fit(0,0);
numeric shaved_stem;
shaved_stem=cap_stem-round 2stem_corr;
penpos1(shaved_stem-tiny,0); penpos2(shaved_stem-tiny,0);
pickup tiny_pen; top y1=h; bot y2=0;
lft x1l=lft x2l=round(.5w-.5cap_stem);
filldraw stroke z1e--z2e; % stem
penpos3(shaved_stem-tiny,0); penpos4(shaved_stem-tiny,0);
penpos5(shaved_stem-tiny,0); x5=x1; y5=.2h;
penpos6(shaved_stem-tiny,0); penpos7(shaved_stem-tiny,0);
lft x3l=round u; x7=w-x3; lft x4l=round(3u-.5shaved_stem); x6=w-x4;
y3=y7=good.y .8h; y4=y6=.6h;
filldraw stroke z3e{right}...z4e{down}...z5e{right};	% left stroke
filldraw stroke z7e{left}...z6e{down}...z5e{left};	% right stroke
if serifs: cup_serif(1,2,a,b,1/3,1.25cap_jut,1/3,1.25cap_jut);	% upper serif
 cup_serif(2,1,c,d,1/3,1.25cap_jut,1/3,1.25cap_jut); fi	% lower serif
math_fit(-.8cap_height#*slant-.5u#,.4cap_height#*slant+1.25u#);
penlabels(1,2,3,4,5,6); endchar;
cmchar "Uppercase Greek Omega";
beginchar(oct"012",13u#,cap_height#,0);
italcorr .75cap_height#*slant-.5u#;
adjust_fit(0,0);
pickup tiny_pen; penpos1(vair-tiny,90);
penpos2(cap_curve-tiny,180); penpos3(hair-tiny,180);
penpos4(cap_curve-tiny,0); penpos5(hair-tiny,0);
x1=.5w; top y1r=h+o; lft x2r=round u; y2=y4=.7h; x4=w-x2;
rt x3l=round(1/3(w+.5u)+.5hair); bot y3=bot y5=0; x5=w-x3;
filldraw stroke z3e{curl 0}...{up}z2e
 & pulled_super_arc.e(2,1)(.5superpull)
 & pulled_super_arc.e(1,4)(.5superpull)
 & z4e{down}...{curl 0}z5e;	% bowl
numeric arm_thickness; path p; p=z3{curl 0}...{up}z2;
arm_thickness=round(if notched:slab+2stem_corr else:.75[slab,.85cap_stem] fi);
pickup crisp_pen;
penpos6(arm_thickness-crisp,-90); penpos7(fudged.hair-crisp,-180);
bot y6r=0; x6=x3; lft x7r=round u; y7=good.y(y6l+.5beak);
(x,y)=p intersectionpoint((0,y6l)--(w,y6l)); x6l:=x;
arm.a(6,7,.5beak_darkness,-beak_jut);	% left arm and beak
penpos8(arm_thickness-crisp,-90); penpos9(fudged.hair-crisp,0);
y8=y6; y9=y7; x8+x6=x9+x7=w; x8l:=w-x6l;
arm.b(8,9,.5beak_darkness,beak_jut);	% right arm and beak
math_fit(0,.5ic#); penlabels(1,2,3,4,5,6,7,8,9); endchar;